// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once

#pragma warning(disable: 4251)//STL template export warnings.

#ifndef WIN32_LEAN_AND_MEAN
	#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
#endif

#ifndef _USE_MATH_DEFINES
	#define _USE_MATH_DEFINES
#endif

#if (defined(WIN32) || defined(_WIN32)) && (!defined(__CYGWIN__))
	#include <sys/timeb.h>
	#include <SDKDDKVer.h>
	#include <windows.h>
#elif defined(__APPLE__)
	#include <mach-o/dyld.h>
#else//UNIX-like system.
	#include <arpa/inet.h>
	#include <dlfcn.h>
	#include <dirent.h>
	#include <fcntl.h>
	#include <netinet/in.h>
	#include <netdb.h>
	#include <pthread.h>
	#include <sys/select.h>
	#include <sys/socket.h>
	#include <sys/stat.h>
	#include <sys/time.h>
	#include <sys/types.h>
	#include <unistd.h>
#endif

#include <algorithm>
#include <errno.h>
#include <complex>
#include <ctype.h>
#include <deque>
#include <fstream>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <typeinfo>
#include <vector>

#ifdef __AVX__
	#include <immintrin.h>//Intel's AVX intrinsics header.
#elif defined(__SSE__)
	#include <xmmintrin.h>//Intel's SSE intrinsics header.
#endif

#include <GL/glew.h>
#include <GL/glu.h>

#ifdef __APPLE__
	#include <OpenGL/gl.h>
	#include <GLUT/glut.h>
#else
	#include <GL/gl.h>
	#include <GL/glut.h>
	#include <GL/freeglut.h>//Non standard, but we will always be using freeglut so it's ok.
#endif
